# 1、输入：["1","a","b","3","5","8","_"] 想要提取里面得数字，并保存到一个列表中
# 示例：["1","3","5","8"]
list1 = ["1","a","b","3","5","8","_"]
result_list = []
for i in list1:
    if i in "1234567890":
        result_list.append(i)
print(result_list)


# 2、文本 student.txt中包含下面的内容
zhangshan:30
lisi:50
wangwu:60
lifei:70
# 期望能够统计出其中的内容，以dict的形式保存，例如：
# {"zhangshan":30,"lisi":50,"wangwu":60,"lifei":70}
import os
file_path = os.path.abspath('./student.txt')
print(file_path)
dict1 = {}
with open(file_path,"r",encoding='utf-8')as f:
    for i in f.readlines():
        dict1[i.split(':')[0].strip()] = int(i.split(':')[1].strip())
        print(dict1)


# 3、有这样的一个列表，列表内夹在着二维数组，但深度是不可知的，现在请你把这个列表从左向右组成一个新的列表，但是顺序不能乱
# list1 = [1,2,3,[55,99],88,99,77,55,66,11,[77,88,99]]
# 变成新的列表：[1,2,3,55,99,88,99,77,55,66,11,77,88,99]
result_list = []
for i in range(len(list1)):
    if isinstance(list1[i],list):
        result_list.extend(list1[i])
    else:
        result_list.append(list1[i])
print(result_list)

# 4、给你一个 非空 整数数组 nums ，除了某个元素只出现一次以外，其余每个元素均出现两次。找出那个只出现了一次的元素。
nums = [1,1,2,2,5]

# 结果：5
for i in nums:
    if nums.count(i) == 1:
        print(i)
# 5、生成了N个1~100之间的随机整数（N<=1000），N是用户输入的； 对于期指其中重复的数字，只保留一个，把其余相同的数字去掉；
import random
result_list = []
num = int(input("请输入要生成多少个数"))
if num <=1000:
    for i in range(num):
        num1 = random.randint(1, 100)
        if num1 not in result_list:
            result_list.append(num1)
    print(result_list)
else:
    print("输入的整数超过1000")




# 6、计算用户输入的字符串内容中有几个十进制数字？几个字母？
# 如：asduiaf878123jkjsfd-‐213928
# 数字有12个。
# 字母有13个
str1 = input("请输入字符串")
str_num = 0
num = 0
other = 0
for i in str1:
    if i in "0123456789":
        num+=1
    elif (i >= 'a' and i <='z') or (i >='A' and i <='Z') :
        str_num += 1
    else:
        other+=1
print(f"字母有{str_num}个，数字有{num}个,其他{other}")
# 7、开发敏感词语过滤程序，提示用户输入内容，如果用户输入的内容中包含特殊的字符：
# # 如 "t" ,"l", "f" 则将内容替换为***
s_3 = input("请输入内容")
str2 = ""
for i in s_3:
    if i in "tlf":
        str2 += "***"
    else:
        str2+=i
    print(str2)




# 8、好友管理系统
# 1、实验题目：好友管理系统
# 请设计一个好友管理系统，每个功能都对应一个序号，用户可根据提示"请输入您的选项"选择序号执行相应的操作，包括：
# （1）添加好友：用户根据提示"请输入要添加的好友："输入要添加好友的姓名，添加后会提示"好友添加成功"。
# （2）删除好友：用户根据提示"请输入删除好友姓名："输入要删除好友的姓名，删除后提示"删除成功"。
# （3）备注好友：用户根据提示"请输入要修改的好友姓名："和"请输入修改后的好友姓名："分别输入修改前和修改后的好友姓名，修改后会提示"备注成功"。
# （4）展示好友：若用户还没有添加过好友，提示"好友列表为空"，否则返回每个好友的姓名。
# （5）退出：关闭好友系统。
dict1 = {}
num1 = 0
while True:
    print("\n欢迎来到好友管理系统")
    print("请选择选项来操作")
    print("（1）添加好友")
    print("（2）删除好友")
    print("（3）备注好友")
    print("（4）展示好友")
    print("（5）退出")
    num = input("请输入序号")
    if num == "1":
        num1+=1 # 控制key 的名字不重复
        name = input("输入要添加好友的姓名")
        if name in dict1.values():
            print("好友已经存在了，不能重复添加！")
        else:
            dict1.update({"姓名" + str(num1): name}) #
            print("好友添加成功")
    elif num == "2":
        name = input("输入要删除好友的姓名")
        if name not in dict1.values():
            print("好友不存在，删除失败！")
        else:
            try:
                for key,value in dict1.items(): # 遍历字典的key还有value
                    if value == name: # 如果某个value值等于  我要删除的好友姓名
                        dict1.pop(key)
            except:
                pass
                print("删除成功")
    elif num == "3":
        name = input("输入要备注的好友姓名")
        new_name = input("输入备注姓名")
        if name not in dict1.values():
            print("好友不存在")
        else:
            for key,value in dict1.items():
                if value == name:
                    dict1[key] = new_name
                    print("备注成功")
    elif num == "4":
        if dict1:
            for i in dict1.values():
                print(i,end=" ")
        else:
            print("好友列表为空！")

    elif num == "5":
        print("退出好友列表！")
        break
    else:
        print("选择有误，请重新选择！")